---
title: Data model
summary: Table catalog recovered from the consumed SAIF packages, grouped by business domain, with owning service and CRUD traceability.
status: draft
owner: Claims
last_reviewed: 2026-10-01
---

# Data model

The application does not define entities of its own: it reads and writes data through the SAIF package services, which use an NHibernate unit of work on Oracle. Persistence uses an NHibernate unit of work named `ClaimBillEntry` on the Oracle connection pool `CLM`, created per request in the composition root (`SAIF.DependencyMaps.Web.ClaimBillEntry/DependencyMap.cs:43-44`, `:64-72`). See [Architecture](architecture.md#composition-root).

Package-context resolution against the consumed `SAIF.SAIFCode.Core` package (`SAIF.Services` assembly) recovered a 12-table catalog reachable from ClaimBillEntry's service calls, grouped by business domain below.† 9 of the 12 tables carry traced CRUD evidence; 3 are reachability-only, with no CRUD operation confirmed beyond the call site.

## Data access summary

| Domain | Accessed through | Operations | Tables |
| --- | --- | --- | --- |
| Bills (header, status, queue) | `IBillEntryService`, `IBillService`, `IBillQueryService` | Load, save, submit, status update, send or pend, search | `CBP_BILL`, `CBP_BILL_ENTRY_SOURCE_CODE` |
| Diagnoses and procedures | `IBillDiagnosisService`, `IBillProcedureService` | Create, read, update, delete, code validation | `CBP_DIAGNOSIS`, `CBP_PROCEDURE_CODE`, `CBP_PRIMARY_PROCEDURE_CODE` |
| Service lines | `IBillServiceService` | Create, read, update, delete, charged total | `CBP_BILL_SERVICE` |
| Notes | `INoteService`, `IBillEntryService` | Create, read, update, inactivate | `CBP_NOTE`, `CASE_NOTE` |
| Providers | `IProviderQueryProvider` | Billing and rendering provider reads, tax id validation | `PROVIDER_LOCATION` |
| Claim, worker and claim security | `IClaimInformationService`, `IClaimSecurityService` | Read | `CLAIM_ACTIVITY`, `CLAIM_ACTIVITY_CATEGORY_CODE`, `CLAIM_ACTIVITY_TYPE_CODE` |
| User grid preferences | `IUserProfileService` | Save, clear | Not traced** — no table identified for this domain |

## Table catalog by domain

### Bill core domain

| Table | Schema | Owning service | CRUD | Notes |
| --- | --- | --- | --- | --- |
| `CBP_BILL` | (default, `CLM`) | `IBillEntryService` | C, R, U | Business object `CbpBill`; reached from `EntryController`† |
| `CBP_BILL_ENTRY_SOURCE_CODE` | (default, `CLM`) | `IBillEntryService` | R only | Reached from `EntryController.GetNewBill`† |

### Diagnosis domain

| Table | Schema | Owning service | CRUD | Notes |
| --- | --- | --- | --- | --- |
| `CBP_DIAGNOSIS` | (default, `CLM`) | `IBillDiagnosisService` | C, R, U, D | Business object `CbpDiagnosis`; reached from `DiagnosisGridController`† |

### Procedure domain

| Table | Schema | Owning service | CRUD | Notes |
| --- | --- | --- | --- | --- |
| `CBP_PROCEDURE_CODE` | (default, `CLM`) | `IBillProcedureService` | C, R, U, D | Business object `CbpProcedureCode`; reached from `ProcedureGridController`† |
| `CBP_PRIMARY_PROCEDURE_CODE` | (default, `CLM`) | `IBillProcedureService` | R only | Business object `CbpPrimaryProcedureCode`; reached from `ProcedureGridController`† |

### Service line domain

| Table | Schema | Owning service | CRUD | Notes |
| --- | --- | --- | --- | --- |
| `CBP_BILL_SERVICE` | (default, `CLM`) | `IBillServiceService` | C, R, U, D | Business object `CbpBillService`; reached from `ServiceGridController`† |

### Notes domain

| Table | Schema | Owning service | CRUD | Notes |
| --- | --- | --- | --- | --- |
| `CBP_NOTE` | (default, `CLM`) | `INoteService` (C/U/D), `IBillEntryService` (R: `GetBillNotes`) | C, R, U, D | Business object `CbpNote`; reached from `NoteGridController`† |
| `CASE_NOTE` | `LEGAL` | `SAIF.SAIFCode.Core` (`LegalQueryProvider`) | Reachability only — no CRUD traced** | Business object `LegalNote`; constructed in the DM composition root only, no ClaimBillEntry controller calls it directly† |

### Provider domain

| Table | Schema | Owning service | CRUD | Notes |
| --- | --- | --- | --- | --- |
| `PROVIDER_LOCATION` | (default, `CLM`) | `IProviderQueryProvider`/`IBillEntryService` | R only | Business object `ProviderLocation`; reached from `ProviderController`† |

### Claim/worker domain

| Table | Schema | Owning service | CRUD | Notes |
| --- | --- | --- | --- | --- |
| `CLAIM_ACTIVITY` | (default, `CLM`) | `IClaimInformationService`/`IClaimSecurityService` | R only | Business object `ClaimNote`; reached from `EntryController`/`BaseController`† |
| `CLAIM_ACTIVITY_CATEGORY_CODE` | (default, `CLM`) | — | Reachability only — no CRUD traced** | Business object `ClaimNoteCategory`; no distinct calling method beyond the `ClaimNote` read path† |
| `CLAIM_ACTIVITY_TYPE_CODE` | (default, `CLM`) | — | Reachability only — no CRUD traced** | Business object `ClaimNoteType`; same caveat as `ClaimNoteCategory`† |

### Schema and access-path summary

- 11 of 12 tables are in the default `CLM` schema; exactly 1 (`CASE_NOTE`) is in the `LEGAL` schema.†
- All 12 are accessed via `IUnitOfWork.GetRepository<T>()` (NHibernate), inside the `SAIF.SAIFCode.Core` package's bundled `SAIF.Services` assembly.†
- 3 of 12 tables are reachability-only, with no CRUD traced: `CASE_NOTE`, `CLAIM_ACTIVITY_CATEGORY_CODE`, `CLAIM_ACTIVITY_TYPE_CODE`. These are flagged `**` rather than presented as fully traced.

## Session state

| Key | Purpose | Storage |
| --- | --- | --- |
| `MailId` | Remembers the inbox owner for the session | ASP.NET Session (in memory, not a table) |
| `SendPendMailId` | Remembers the last send or pend mail id | ASP.NET Session (in memory, not a table) |

The Inbox reads `MailId` ([BR-SCR-011](business-rules.md#br-scr-011-inbox-owner-defaults-to-current-user)), and Bill entry reads and writes `SendPendMailId` (`ClaimBillEntry/Controllers/EntryController.cs:195`).

## Related documentation
- [Index](index.md)
- [Overview](overview.md)
- [Architecture](architecture.md)
- [Dependencies](dependencies.md)
- [Configuration](configuration.md)
- [Operations and processes](operations-processes.md)
- [Business rules](business-rules.md)
- [Security and authorization](security-authorization.md)
- [Hosted endpoints](hosted-endpoints.md)
- [Tech debt](tech-debt.md)
- [Screen catalog](../screens/index.md)

> **Note:** Statements marked with `†` are derived from dependency library
> documentation via the Legends CLI. Statements marked with `**` could
> not be confirmed; treat as unknown until verified.

## Sources
- SAIF.DependencyMaps.Web.ClaimBillEntry/DependencyMap.cs
- ClaimBillEntry/Controllers/EntryController.cs
- ClaimBillEntry/Controllers/InboxController.cs
- ClaimBillEntry/Controllers/BaseController.cs
